home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-11-26 | 7.0 KB | 274 lines | [TEXT/PJMM] |
- unit MACENVY;
-
- interface
-
- uses
- ParameterDef;
-
- procedure Main (var p: parameterRecord);
-
- implementation
-
- uses
- NumSubs;
-
- const
- AMegaByte = 1024 * 1024;
-
- procedure Main (var p: parameterRecord);
-
- type
- shortStr = string[15];
-
- function GDecStr (selector: OSType): shortStr;
- var
- err: OSErr;
- response: longint;
- begin
- GDecStr := '';
- err := Gestalt(selector, response);
- if err = noErr then begin
- GDecStr := DecStr(response);
- end; (* if *)
- end; (* GDecStr *)
-
- function GMemStr (selector: OSType): Str31;
- var
- err: OSErr;
- response: longint;
- begin
- GMemStr := '';
- err := Gestalt(selector, response);
- if err = noErr then begin
- if (response div 1024) < 1024 then begin
- GMemStr := concat(DecStr(response div 1024), 'K (', HexL(response), ')');
- end
- else begin
- GMemStr := concat(DecStr(response div 1024 div 1024), 'M (', HexL(response), ')');
- end; (* if *)
- end; (* if *)
- end; (* GMemStr *)
-
- function GVerStr (selector: OSType): shortStr;
- var
- err: OSErr;
- response: longint;
- begin
- GVerStr := '';
- err := Gestalt(selector, response);
- if err = noErr then begin
- GVerStr := concat(DecStr(band(bsr(response, 8), $F)), '.', DecStr(band(bsr(response, 4), $F)), '.', DecStr(band(bsr(response, 0), $F)));
- end; (* if *)
- end; (* GVerStr *)
-
- procedure AddChar (ch: char);
- begin
- if p.offset < p.hlength then begin
- BlockMove(ptr(longint(@ch) + 1), ptr(longInt(p.fingeroutput^) + p.offset), 1);
- p.offset := p.offset + 1;
- end;
- end; (* AddChar *)
-
- var
- response: longint;
- count: integer;
- i, row, col: integer;
- bit: integer;
- err: OSErr;
- chh: CharsHandle;
- begin
- p.returnValue^ := '';
-
- if p.param^ = 'APPLETALK' then begin
- p.returnValue^ := GDecStr(gestaltAppleTalkVersion);
- end; (* if *)
-
- if p.param^ = 'FPU' then begin
- err := Gestalt(gestaltFPUType, response);
- if err = noErr then begin
- case response of
- gestalt68881:
- p.returnValue^ := '68881';
- gestalt68882:
- p.returnValue^ := '68882';
- gestalt68040FPU:
- p.returnValue^ := '68040 FPU (Aren''t you jealous?)';
- otherwise
- p.returnValue^ := 'unknown';
- end; (* case *)
- end; (* if *)
- end; (* if *)
-
- if p.param^ = 'KEYBOARD' then begin
- err := Gestalt(gestaltKeyboardType, response);
- if err = noErr then begin
- case response of
- gestaltMacKbd:
- p.returnValue^ := 'Macintosh Keyboard';
- gestaltMacAndPad:
- p.returnValue^ := 'Macintosh Keyboard and KeyPad';
- gestaltMacPlusKbd:
- p.returnValue^ := 'Macintosh Plus Keyboard';
- gestaltExtADBKbd:
- p.returnValue^ := 'Extended ADB Keyboard';
- gestaltStdADBKbd:
- p.returnValue^ := 'Standard ADB Keyboard';
- gestaltPrtblADBKbd:
- p.returnValue^ := 'Portable Standard ADB Keyboard';
- gestaltPrtblISOKbd:
- p.returnValue^ := 'Portable ISO ADB Keyboard';
- gestaltStdISOADBKbd:
- p.returnValue^ := 'ISO Standard Keyboard';
- gestaltExtISOADBKbd:
- p.returnValue^ := 'ISO Extended Keyboard';
- gestaltADBKbdII:
- p.returnValue^ := 'ADB Keyboard II';
- gestaltADBISOKbdII:
- p.returnValue^ := 'ISO ADB Keyboard II';
- otherwise
- p.returnValue^ := 'unknown';
- end; (* case *)
- end; (* if *)
- end; (* if *)
-
- if p.param^ = 'LOWMEMORY' then begin
- p.returnValue^ := GDecStr(gestaltLowMemorySize);
- end; (* if *)
-
- if (p.param^ = 'RAMSIZE') or (p.param^ = 'LOGICALRAMSIZE') then begin
- p.returnValue^ := GMemStr(gestaltLogicalRAMSize);
- end; (* if *)
-
- if p.param^ = 'MACHINE' then begin
- err := Gestalt(gestaltMachineType, response);
- if err = noErr then begin
- GetIndString(p.returnValue^, kMachineNameStrID, response);
- end; (* if *)
- end; (* if *)
-
- if p.param^ = 'ICON' then begin
- err := Gestalt(gestaltMachineIcon, response);
- if err = noErr then begin
- chh := CharsHandle(GetResource('ICN#', LoWrd(response)));
- if chh <> nil then begin
- for row := 0 to 31 do begin
- for col := 0 to 3 do begin
- for bit := 7 downto 0 do begin
- if btst(ord(chh^^[row * 4 + col]), bit) then begin
- AddChar('X');
- AddChar('X');
- end
- else begin
- AddChar(' ');
- AddChar(' ');
- end; (* if *)
- end; (* for *)
- end; (* for *)
- AddChar(chr(13));
- AddChar(chr(10));
- end; (* for *)
- end; (* if *)
- end; (* if *)
- end; (* if *)
-
- if p.param^ = 'MMU' then begin
- err := Gestalt(gestaltMMUType, response);
- if err = noErr then begin
- case response of
- gestalt68851:
- p.returnValue^ := '68851';
- gestalt68030MMU:
- p.returnValue^ := '68030 MMU';
- gestalt68040MMU:
- p.returnValue^ := '68040 MMU';
- otherwise
- p.returnValue^ := 'unknown';
- end; (* case *)
- end; (* if *)
- end; (* if *)
-
- if p.param^ = 'PAGESIZE' then begin
- p.returnValue^ := GDecStr(gestaltLogicalPageSize);
- end; (* if *)
-
- if p.param^ = 'CPU' then begin
- err := Gestalt(gestaltProcessorType, response);
- if err = noErr then begin
- case response of
- gestalt68000:
- p.returnValue^ := '68000';
- gestalt68010:
- p.returnValue^ := '68010 (Yes I know it''s obscure but I love it anyway)';
- gestalt68020:
- p.returnValue^ := '68020';
- gestalt68030:
- p.returnValue^ := '68030';
- gestalt68040:
- p.returnValue^ := '68040';
- otherwise
- p.returnValue^ := 'unknown';
- end; (* case *)
- end; (* if *)
- end; (* if *)
-
- if p.param^ = 'QUICKDRAW' then begin
- p.returnValue^ := GVerStr(gestaltQuickdrawVersion);
- end; (* if *)
-
- if (p.param^ = 'REALRAMSIZE') or (p.param^ = 'PHYSICALRAMSIZE') then begin
- p.returnValue^ := GMemStr(gestaltPhysicalRAMSize);
- end; (* if *)
-
- if p.param^ = 'ROMSIZE' then begin
- p.returnValue^ := GMemStr(gestaltROMSize);
- end; (* if *)
-
- if p.param^ = 'ROM' then begin
- err := Gestalt(gestaltROMVersion, response);
- p.returnValue^ := HexW(LoWrd(response));
- end; (* if *)
-
- if p.param^ = 'SLOTS' then begin
- err := Gestalt(gestaltNuBusConnectors, response);
- if err = noErr then begin
- count := 0;
- for i := 0 to 15 do begin
- if btst(response, i) then begin
- count := count + 1;
- end; (* if *)
- end; (* for *)
- p.returnValue^ := DecStr(count);
- end; (* if *)
- end; (* if *)
-
- if p.param^ = 'SOUND' then begin
- err := Gestalt(gestaltSoundAttr, response);
- if err = noErr then begin
- if btst(response, gestaltStereoCapability) then begin
- p.returnValue^ := 'Stereo';
- end
- else begin
- p.returnValue^ := 'Mono';
- end; (* if *)
- p.returnValue^ := concat(p.returnValue^, ' sound');
- if btst(response, gestaltHasSoundInputDevice) then begin
- p.returnValue^ := concat(p.returnValue^, ' with sound input');
- end;
- end; (* if *)
- end; (* if *)
-
- if p.param^ = 'SYSTEM' then begin
- p.returnValue^ := GVerStr(gestaltSystemVersion);
- end; (* if *)
-
- if p.param^ = 'TEXTEDIT' then begin
- p.returnValue^ := GDecStr(gestaltTextEditVersion);
- end; (* if *)
-
- if p.param^ = 'GESTALT' then begin
- p.returnValue^ := GDecStr(gestaltVersion);
- end; (* if *)
-
- end;
-
- end. (* MACENVY *)